home *** CD-ROM | disk | FTP | other *** search
/ Australian Personal Computer 2002 November / CD 1 / APC0211D1.ISO / workshop / prog / files / ActivePerl-5.6.1.633-MSWin32.msi / _f67e718ee5bad49c5c25c1e92ff25978 < prev    next >
Encoding:
Text File  |  2001-12-28  |  4.8 KB  |  216 lines

  1. <HTML>
  2. <HEAD><TITLE>PerlScript sample:  RPN Calculator</TITLE>
  3. <link rel="stylesheet" type="text/css" href="../HTML/Active.css">
  4. </HEAD>
  5. <BODY>
  6.  
  7. <!-- 
  8.     ActiveState PerlScript sample 
  9.     PerlScript:  The coolest way to program custom web solutions. 
  10. -->
  11.  
  12. <TABLE CELLPADDING=0 BORDER=3 CELLSPACING=0>
  13. <TR VALIGN=TOP ><TD>
  14. <A HREF="index.htm" NAME="Image"><IMG SRC="PSBWlogo.gif" WIDTH=400 HEIGHT=48 ALT="The power of PerlScript!" BORDER=5></A><P>
  15. </TD></TR>
  16. </TABLE>
  17. <HR>
  18.  
  19. <SCRIPT LANGUAGE="PerlScript">
  20. $flagNewNum = 1;
  21. @stack = 0;
  22.  
  23. sub NumPressed($)
  24. {
  25.     my $num = $_[0];
  26.     my $Keypad = $window->document->Keypad;
  27.     if ($flagNewNum) {
  28.            $flagNewNum = 0;
  29.         push @stack, $Keypad->Readout->{'Value'};
  30.         $Keypad->Readout->{'Value'} = $num;
  31.     } else {
  32.         $Keypad->Readout->{'Value'} .= $num;
  33.     }
  34. }
  35.  
  36. sub Decimal_onClick()
  37. {
  38.     my $Keypad = $window->document->Keypad;
  39.     if ($flagNewNum) {
  40.            $flagNewNum = 0;
  41.         $Keypad->Readout->{'Value'} = "0.";
  42.     } else {
  43.         $_ = $Keypad->Readout->{'Value'};
  44.         $Keypad->Readout->{'Value'} = $_ . '.' if (/\./);
  45.     }
  46. }
  47. sub Decimal_onclick()
  48. {
  49.     Decimal_onClick()
  50. }
  51.  
  52. sub Plus_onClick()
  53. {
  54.     $flagNewNum = 1;
  55.     $window->document->Keypad->Readout->{'Value'} += pop @stack;
  56. }
  57. sub Plus_onclick()
  58. {
  59.     Plus_onClick()
  60. }
  61.  
  62. sub Minus_onClick()
  63. {
  64.     my $Keypad = $window->document->Keypad;
  65.     $flagNewNum = 1;
  66.     $Keypad->Readout->{'Value'} = 
  67.         (pop @stack) - $Keypad->Readout->{'Value'};
  68. }
  69.  
  70. sub Minus_onclick()
  71. {
  72.     Minus_onClick()
  73. }
  74.  
  75. sub Multiply_onClick()
  76. {
  77.     $flagNewNum = 1;
  78.     $window->document->Keypad->Readout->{'Value'} *= pop @stack;
  79. }
  80.  
  81. sub Multiply_onclick()
  82. {
  83.     Multiply_onClick()
  84. }
  85.  
  86. sub Divide_onClick()
  87. {
  88.     my $Keypad = $window->document->Keypad;
  89.     $flagNewNum = 1;
  90.     $Keypad->Readout->{'Value'} = 
  91.         (pop @stack) / $Keypad->Readout->{'Value'};
  92. }
  93.  
  94. sub Divide_onclick()
  95. {
  96.     Divide_onClick()
  97. }
  98.  
  99. sub SquareRoot_onClick()
  100. {
  101.     my $Keypad = $window->document->Keypad;
  102.     $flagNewNum = 1;
  103.     $Keypad->Readout->{'Value'} = 
  104.         sqrt($Keypad->Readout->{'Value'});
  105. }
  106.  
  107. sub SquareRoot_onclick()
  108. {
  109.     SquareRoot_onClick()
  110. }
  111.  
  112. sub Square_onClick()
  113. {
  114.     my $Keypad = $window->document->Keypad;
  115.     $flagNewNum = 1;
  116.     $Keypad->Readout->{'Value'} = 
  117.         $Keypad->Readout->{'Value'} * $Keypad->Readout->{'Value'};
  118. }
  119.  
  120. sub Square_onclick()
  121. {
  122.     Square_onClick()
  123. }
  124.  
  125. sub Neg_onClick()
  126. {
  127.     my $Keypad = $window->document->Keypad;
  128.     $Keypad->Readout->{'Value'} = 
  129.         -($Keypad->Readout->{'Value'});
  130. }
  131.  
  132. sub Neg_onclick()
  133. {
  134.     Neg_onClick()
  135. }
  136.  
  137. sub Percent_onClick()
  138. {
  139.     my $Keypad = $window->document->Keypad;
  140.     $flagNewNum = 1;
  141.     $Keypad->Readout->{'Value'} = ($Keypad->Readout->{'Value'}) / 100;
  142. }
  143.  
  144. sub Percent_onclick()
  145. {
  146.     Percent_onClick()
  147. }
  148.  
  149. sub Enter_onClick()
  150. {
  151.     my $Keypad = $window->document->Keypad;
  152.     $flagNewNum = 1;
  153.     push @stack, $Keypad->Readout->{'Value'};
  154. }
  155.  
  156. sub Enter_onclick()
  157. {
  158.     Enter_onClick()
  159. }
  160.  
  161.   </SCRIPT>
  162.  
  163.  
  164. <form action="" Name="Keypad">
  165. <TABLE>
  166. <TABLE BORDER=2 WIDTH=50 HEIGHT=60 CELLPADDING=1 CELLSPACING=5>
  167. <CAPTION ALIGN=top>
  168.     <b>RPN Calculator</b><p>
  169.     
  170. </CAPTION>
  171. <TR>
  172.     <TD COLSPAN=3 ALIGN=MIDDLE><INPUT NAME="ReadOut" TYPE="Text" SIZE=24 VALUE="0" WIDTH=100%></TD>
  173.     <TD></TD>
  174.     <TD><INPUT NAME="Square" TYPE="Button" VALUE="  sqr  " ></TD>
  175.     <TD><INPUT NAME="SquareRoot" TYPE="Button" VALUE="  sqrt " ></TD>
  176. </TR>
  177. <TR>
  178.     <TD><INPUT NAME="Seven" TYPE="Button" VALUE="  7  " onClick="NumPressed(7);"></TD>
  179.     <TD><INPUT NAME="Eight" TYPE="Button" VALUE="  8  " onClick="NumPressed(8);"></TD>
  180.     <TD><INPUT NAME="Nine" TYPE="Button" VALUE="  9  " onClick="NumPressed(9);"></TD>
  181.     <TD></TD>
  182.     <TD><INPUT NAME="Neg" TYPE="Button" VALUE=" +/- " ></TD>
  183.     <TD><INPUT NAME="Percent" TYPE="Button" VALUE="  % " ></TD>
  184. </TR>
  185.  
  186. <TR>
  187.     <TD><INPUT NAME="Four" TYPE="Button" VALUE="  4  " onClick="NumPressed(4);"></TD>
  188.     <TD><INPUT NAME="Five" TYPE="Button" VALUE="  5  " onClick="NumPressed(5);"></TD>
  189.     <TD><INPUT NAME="Six" TYPE="Button" VALUE="  6  " onClick="NumPressed(6);"></TD>
  190.     <TD></TD>
  191.     <TD ALIGN=MIDDLE><INPUT NAME="Plus" TYPE="Button" VALUE="  +  " ></TD>
  192.     <TD ALIGN=MIDDLE><INPUT NAME="Minus" TYPE="Button" VALUE="   -   " ></TD>
  193. </TR>
  194. <TR>
  195.     <TD><INPUT NAME="One" TYPE="Button" VALUE="  1  " onClick="NumPressed(1);"></TD>
  196.     <TD><INPUT NAME="Two" TYPE="Button" VALUE="  2  " onClick="NumPressed(2);"></TD>
  197.     <TD><INPUT NAME="Three" TYPE="Button" VALUE="  3  " onClick="NumPressed(3);"></TD>
  198.     <TD></TD>
  199.     <TD ALIGN=MIDDLE><INPUT NAME="Multiply" TYPE="Button" VALUE="  *  " ></TD>
  200.     <TD ALIGN=MIDDLE><INPUT NAME="Divide" TYPE="Button" VALUE="   /   " ></TD>
  201. </TR>
  202. <TR>
  203.     <TD><INPUT NAME="Zero" TYPE="Button" VALUE="  0  " onClick="NumPressed(0);"></TD>
  204.     <TD><INPUT NAME="Decimal" TYPE="Button" VALUE="   .  " ></TD>
  205.     <TD COLSPAN=3></TD>
  206.     <TD><INPUT NAME="Enter" TYPE="Button" VALUE="Enter"></TD>
  207. </TR>
  208. </TABLE>
  209. </TABLE>
  210. </B>
  211. </FORM>
  212. <BR><BR>
  213. <HR>
  214.  
  215. </BODY>
  216. </HTML>